package com.hqully.smartfumehood.mapper;
import java.util.List;

import com.hqully.smartfumehood.entity.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * <p>
 * Mapper 接口
 * </p>
 *
 * @author lly
 * @since 2022 -03-09
 *
 */
@Mapper
public interface UserMapper extends BaseMapper<User> {

    /**
     * <p>
     *     通过用户名查找用户
     * </p>
     * @date 2022/5/7 20:49 <br>
     * @author liulingyu <br>
     * @param username 用户名
     * @return {@link User} 用户对象
     */
    public User findUserByUsername(String username);


    /**
     * <p>
     *     添加usr
     * </p>
     * @date 2022/5/8 15:29 <br>
     * @author liulingyu <br>
     * @param user usr
     * @return {@link int}
     */
    int addUser(User user);

    /**
     * Update user int.
     *
     * @param user the user
     * @return the int
     */
    /**
     * <p>
     *     更新usr
     * </p>
     * @date 2022/5/8 15:30 <br>
     * @author liulingyu <br>
     * @param user usr
     * @return {@link int}
     */
    int updateUser(User user);

    /**
     * Bind role int.
     *
     * @param userId the user id
     * @param roleId the role id
     * @return the int
     */
    /**
     * <p>
     *     为用户绑定角色
     * </p>
     * @date 2022/5/8 15:30 <br>
     * @author liulingyu <br>
     * @param userId 用户ID
     * @param roleId 角色ID
     * @return {@link int}
     */
    int bindRole(@Param("userId") String userId, @Param("roleId") int roleId);

    /**
     * <p>
     *     更新用户绑定的角色
     * </p>
     * @date 2022/5/8 15:30 <br>
     * @author liulingyu <br>
     * @param userId 用户ID
     * @param roleId 角色ID
     * @return {@link int}
     */
    int UpdateBindRole(@Param("userId") String userId, @Param("roleId") int roleId);


    /**
     * <p>
     *     根据[username]的参数条件查询该用户所属单位ID
     * </p>
     * @date 2022/5/8 15:28 <br>
     * @author liulingyu <br>
     * @param username 用户名
     * @return {@link Long} 单位ID
     */
    Long findUnitByUsername(@Param("username") String username);

    /**
     * <p>
     *     根据角色ID的参数条件查询用户ID
     * </p>
     * @date 2022/5/8 15:32 <br>
     * @author liulingyu <br>
     * @param roleId 角色ID
     * @return {@link List< Integer>} 用户ID列表
     */
    List<Integer> findUserIdByRoleId(@Param("roleId") int roleId);


    
}
